#define _CRT_SECURE_NO_WARNINGS 1

//交换两个变量（不创建临时变量）
//#include <stdio.h>
//int main()
//{
//	int a = 3;
//	int b = 5;
//	//a，b的值过大会出现溢出情况。
//	printf("未交换前a=%d，b=%d\n", a, b);
//	a = a + b;//8
//	b = a - b;//3
//	a = a - b;
//
//	printf("交换后a=%d，b=%d",a, b);
//	return 0;
//}

//#include <stdio.h>
//
//
////异或运算，相同为0，相异为1
//int main()
//{
//	int a = 5;
//	int b = 3;
//	printf("未交换前a=%d，b=%d\n", a, b);
//	a = a ^ b;
//	b = a ^ b;//a^b^b,b^b=0,a^0=a
//	a = a ^ b;
//	printf("交换后a=%d，b=%d",a, b);
//	return 0;
//}


//统计二进制中1的个数
//#include <stdio.h>
//count_one_bit(unsigned int m)
//{
//    int count = 0;
//    while (m)
//    {
//        if (m % 2 == 1)
//            count++;
//        m = m / 2;
//    }
//    return count;
//
//}
//
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int ret = count_one_bit(n);
//    printf("%d", ret);
//    return 0;
//}

//也可以用按位与&，&1



//打印整数二进制的奇数位和偶数位
//#include <stdio.h>
//int main() {
//	int num = 0;
//	printf("请输入一个数:");
//	scanf("%d", &num);
//	printf("奇数位：");
//	for (int i = 31; i >= 1; i -= 2) {
//		printf("%d ", (num >> i) & 1);
//	}
//	printf("\n");
//	printf("偶数位：");
//	for (int i = 30; i >= 0; i -= 2) {
//		printf("%d ", (num >> i) & 1);
//	}
//	printf("\n");
//	return 0;
//}





//在一个整型数组中，只有一个数字出现一次，其他数组都是成对出现的，请找出那个只出现一次的数字。

//例如：数组中有：1 2 3 4 5 1 2 3 4，只有5出现一次，其他数字都出现2次，找出5

//
//#include <stdio.h>
//int main()
//{
//	int arr[] = { 1,2,3,4,5,1,2,3,4 };
//	int i = 0;
//	int j = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);//计算出数组的长度
//	while (i < sz)
//	{
//		for (j = 0; j < sz; j++)
//		{
//			if (arr[i] == arr[j] && (i != j))//若查找到相同的，停止该次for循环，并使i++，再次进行下个数的查找
//			{
//				i++;
//				break;
//			}
//		}
//		if (j == sz)//若都查找不到，则是我们要找的数
//			printf("%d ", arr[i++]);
//	}
//
//
//	return 0;
//}
//


////实现一个函数，可以左旋字符串中的k个字符。 例如：ABCD左旋一个字符得到BCDA; ABCD左旋两个字符得到CDAB
//#include <stdio.h>
//#include <string.h>
//
//void Func(char src[], int k)
//{
//	int len = strlen(src);
//	int time = k % len;
//	int i = 0,j=0;
//	
//	for (i = 0; i < time; i++)
//	{
//		char tmp = src[0];
//		for (j = 0; j < len - 1; j++)
//		{
//			src[j] = src[j + 1];
//		}
//		src[j] = tmp;
//	}
//}
//int main()
//{
//	char str[] = "ABCD";
//	Func(str, 2);
//		printf("%s", str);
//
//	return 0;
//}




////冒泡排序
//#include <stdio.h>
//int count = 0;
//void bubble_sort(int arr[], int sz)
//{
//	for (int i = 0; i < sz - 1; i++)//趟数
//	{
//		int flag = 1;//假设有序
//		for (int j = 0; j < sz-1-i; j++)
//		{
//			count++;
//			if (arr[j] > arr[j + 1])
//			{
//				int tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//				flag = 0;
//			}
//		}
//		if (flag == 1)
//		{
//			break;
//		}
//	}
//}
//
//void print_arr(int arr[], int sz)
//{
//	int i = 0;
//	for ( i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//
//
//
//int main()
//{
//	int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	print_arr(arr, sz);
//	bubble_sort(arr, sz);
//	print_arr(arr, sz);
//	return 0;
//}

//用指针打印数组内容
//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10};
//	int* p = arr;
//	for (int i = 0; i < 9; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//
//	return 0;
//}


//strlen的实现
//#include <stdio.h>
//int MyStrlen(char* str)
//{
//	int count = 0;
//	char* p = str;
//	while (*p != '\0')
//	{
//		count++;
//		p++;
//	}
//	return count;
//}
//int main()
//{
//	char* str = "abcdef";
//	int len = MyStrlen(str);
//	printf("%d\n", len);
//	return 0;
//}



//调整奇数偶数顺序
//#include <stdio.h>
//
//void Func(int arr[], int len)
//{
//	int i = 0;
//	int j = len - 1;
//	while (i < j)
//	{
//		while (i < j &&arr[i] % 2 != 0 )
//		{
//			i++;//证明是奇数
//		}
//		while (i < j && arr[j] % 2 == 0)
//		{
//			j--;
//		}
//		//交换
//		int tmp = arr[i];
//		arr[i] = arr[j];
//		arr[j] = tmp;
//	}
//}
//
//void Show(int arr[], int len)
//{
//	for (int i = 0; i < len; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9 };
//	int len = sizeof(arr) / sizeof(arr[0]);
//	Func(arr, len);
//	Show(arr, len);
//	return 0;
//}



//
//#include <stdio.h>
//#include <string.h>
//int main()
//{
//	char arr[20] = "abcdef";
//	int ret=strlen(arr);
//	printf("%d", ret);
//	return 0;
//}


#include <stdio.h>

int find_single_dog(int arr[], int sz)
{
    int ret = 0;
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        ret ^= arr[i];
    }
    return ret;
}
int main()
{
    int arr[] = { 1,2,3,4,5,1,2,3,4 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    int dog = find_single_dog(arr, sz);
    printf("%d\n", dog);


    return 0;
}